﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Project_Proto
{
    public partial class Suche : Form
    {
        List<string> gruppen = new List<string>();
        List<FileControl> trefferProtokoll = new List<FileControl>();
        List<TagesordnungspunktObjekt> trefferTop = new List<TagesordnungspunktObjekt>();
        Form1 haupt;
        public Suche(Form1 haupt)
        {
            this.haupt = haupt;
            InitializeComponent();
            gruppen = FileControl.listAvailableGroups();
            cbxFachbereich.Items.AddRange(gruppen.ToArray());
        }

        private void btnSuchen_Click(object sender, EventArgs e)
        {
            dgvSuche.Rows.Clear();
            dgvSuche.Refresh();

            dgvBezeichnung.Visible = false;
            dgvBeschluss.Visible = false;
            dgvNummer.Visible = false;
            suchkriterienProtokoll();
        }
        private void trefferListenProtokoll()
        {
            for (int i = 0; i < trefferProtokoll.Count; i++)
            {
                dgvSuche.Rows.Add(trefferProtokoll[i].Datum.ToShortDateString(),trefferProtokoll[i].Titel,trefferProtokoll[i].Gruppenname);
            }
        }
        private void trefferListenBeschluss()
        {
            for (int i = 0; i < trefferTop.Count; i++)
            {
                dgvSuche.Rows.Add(trefferTop[i].datum.ToShortDateString(), trefferTop[i].protokoll, trefferTop[i].gruppe, trefferTop[i].nummer, trefferTop[i].bezeichnung, trefferTop[i].beschluss);
            }
        }

        private void suchkriterienTop()
        {
            if (txbInhalt.Text != "" & cbxFachbereich.Text != "")
            {
                FileControl.GroupFilter = cbxFachbereich.Text;
                trefferTop = FileControl.searchTOPS(txbInhalt.Text);
                if (trefferTop != null)
                {
                    if (trefferTop.Count != 0)
                    {
                        trefferListenBeschluss();
                    }
                    else
                    {
                        MessageBox.Show("Es wurden keine Beschlüsse gefunden!");
                    }
                }
            }
            else
            {
                MessageBox.Show("Bitte geben Sie einen Suchtext in das Feld Titel ein und/oder wählen Sie eine Gruppe aus!");
            }
        }

        private void suchkriterienProtokoll()
        {
            if (cbxFachbereich.SelectedItem != null & txbInhalt.Text != "")
            {
                FileControl.DatumVon = dtpVon.Value;
                FileControl.DatumBis = dtpBis.Value;
                FileControl.GroupFilter = cbxFachbereich.Text;
                FileControl.TitelFilter = txbInhalt.Text;
                trefferProtokoll = FileControl.search();
                if (trefferProtokoll != null)
                {
                    if (trefferProtokoll.Count != 0)
                    {
                        trefferListenProtokoll();
                    }
                    else
                    {
                        MessageBox.Show("Keine Treffer gefunden.");
                    }
                }
                else
                {
                    MessageBox.Show("Keine Treffer gefunden.");
                }
                
            }
            else if (cbxFachbereich.SelectedItem != null)
            {
                FileControl.DatumVon = dtpVon.Value;
                FileControl.DatumBis = dtpBis.Value;
                FileControl.GroupFilter = cbxFachbereich.Text;
                FileControl.TitelFilter = "";
                trefferProtokoll = FileControl.search();
                if (trefferProtokoll != null)
                {
                    if (trefferProtokoll.Count != 0)
                    {
                        trefferListenProtokoll();
                    }
                    else
                    {
                        MessageBox.Show("Keine Treffer gefunden.");
                    }
                }
                else
                {
                    MessageBox.Show("Keine Treffer gefunden.");
                }
            }
            else
            {
                MessageBox.Show("Bitte wählen Sie eine Gruppe aus.");
            }
        }

        private void dgvSuche_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvBeschluss.Visible == true) 
            {
                FileControl.openPDFforTOP(trefferTop[dgvSuche.CurrentRow.Index]);
            }
            else
            {
                trefferProtokoll[dgvSuche.CurrentRow.Index].openFile();
            }
            
        }

        private void dgvSuche_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            trefferProtokoll[dgvSuche.CurrentRow.Index].openFile();
        }

        private void Suche_FormClosed(object sender, FormClosedEventArgs e)
        {
            haupt.Visible = true;
        }

        private void btnBeschlussSuche_Click(object sender, EventArgs e)
        {
            dgvSuche.Rows.Clear();
            dgvSuche.Refresh();

            dgvBezeichnung.Visible = true;
            dgvBeschluss.Visible = true;
            dgvNummer.Visible = true;

            suchkriterienTop();

        }


    }
}
